Advances in microprocessor and video related technologies have led to wide spread deployment and adoption of numerous types of video devices. Examples of such video devices include but are not limited to digital camcorders, digital versatile disk (DVD) players, video enabled laptop and desktop computing devices as well as servers, and so forth.
Advances in networking, telecommunication, satellite and other related technologies have also led to increase in on demand and/or real time online delivery of video, including delivery over public networks, such as the Internet.
Whether videos are delivered offline (e.g. from a DVD player) or online (e.g. from a video server), high quality video inherently requires a high volume of data. Thus, video delivery and rendering often involve encoding and decoding to reduce the amount of data to be stored, retrieved and/or transmitted.
Encoding/decoding of a video often involves processing the video as a stream of pictures. Each picture may be a field or a frame (typically consisting of two interleaved fields), and decomposed into a number of slices of macroblocks. Each slice may comprise an integer number of macroblocks, typically in raster scan order. Each macroblock in turn may comprise a number of blocks of pixels.
Further, encoding of the various fields/frames of macroblocks often involves predictive encoding that backward and/or forward references other fields/frames. Resultantly, decoding of video has thus far been performed serially.
Serial decoding is inherently not very efficient. Accordingly, improvement is desired.